Faits :
A.
Par jugement du 6 avril 2017, le Tribunal de police de la République et canton de Genève a condamné X._ à une peine pécuniaire de 90 jours-amende à 30 fr., avec sursis pendant 3 ans, ainsi qu'à une amende de 200 fr. pour injures, violence ou menace contre les autorités et les fonctionnaires et contravention à la loi fédérale sur les stupéfiants.
B.
Par arrêt du 21 décembre 2017, la Chambre pénale d'appel et de révision de la Cour de justice de la République et canton de Genève a rejeté l'appel de X._ formé contre le jugement du 6 avril 2017.
En substance, la cour cantonale a retenu les faits suivants.
B.a. A l'occasion d'une manifestation organisée le 4 octobre 2014 à C._, X._ a traité le policier B._ de « sale porc de flic ». Il s'est en outre adressé à d'autres manifestants, présents près de lui, en leur disant ce qui suit : « C'est un flic, on va lui casser la gueule ». Des manifestants cagoulés se sont alors approchés de B._, lequel a décidé, devant les menaces, de quitter les lieux.
B.b. Le 3 février 2015, X._ a cherché à mordre le policier A._ qui tentait de l'appréhender, le traitant à cette occasion de « connard de flic » et de « fils de pute ».
C.
X._ interjette un recours en matière pénale au Tribunal fédéral contre l'arrêt du 21 décembre 2017. Il conclut, avec suite de frais et dépens, principalement à son acquittement des chefs de prévention d'injures et de violence ou menace contre les autorités et les fonctionnaires, ainsi qu'à la condamnation des intimés au versement en sa faveur d'une indemnité de 1'000 fr. pour tort moral. Subsidiairement, il requiert le renvoi de l'affaire à l'autorité précédente pour nouvelle décision dans le sens des considérants. X._ a en outre présenté une demande d'assistance judiciaire.

Considérant en droit :
1.
Le recourant se prévaut d'un établissement arbitraire des faits pertinents ainsi que d'une violation de la présomption d'innocence.
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Il n'entre ainsi pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 2.4 p. 368 et les références citées).
Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs sont fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêts 6B_1154/2017 du 27 avril 2018 consid. 1.1; 6B_1183/2016 du 24 août 2017 consid. 1.1).
La présomption d'innocence, garantie par les art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP, ainsi que son corollaire le principe « in dubio pro reo » concernent tant le fardeau de la preuve que l'appréciation des preuves. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe « in dubio pro reo », celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 7 p. 82).
1.2. Le recourant revient sur les faits qui se sont déroulés le 4 octobre 2014.
1.2.1. La cour cantonale a retenu que le recourant était présent lors de la manifestation du 4 octobre 2014 et qu'il était alors entièrement vêtu de noir, portant capuche et casquette, pour se fondre plus aisément dans la foule et être reconnaissable comme étant favorable au mouvement anti-police. Sur la base des propres prises de vue du recourant, elle a constaté que celui-ci avait filmé de près l'intimé B._, alors qu'il était « en planque » à la rue D._, rue qui était tranquille à ce moment-là. La cour cantonale a également constaté que la scène faisant l'objet de la plainte de l'intimé B._ ne figurait pas sur les images vidéo. Cela s'expliquait par le fait que le recourant ne voulait pas immortaliser des propos et des actes pénalement répréhensibles, car il connaissait bien les limites à ne pas franchir. L'intention du recourant de supprimer des éléments de preuve potentiellement compromettant l'avait en outre conduit à « bousiller » un ordinateur pour effacer toute trace en cas d'enquête de police. La crédibilité des déclarations de l'intimé B._ concernant les mots injurieux dont il a été l'objet était renforcée par l'hostilité du recourant envers les agents de la police et en particulier ceux de la Brigade E._, dont faisait partie l'intimé B._, auxquels il donnait des noms d'animaux, tels que celui de « porc ». De plus, la cour cantonale a considéré comme établi que le recourant s'était contredit en indiquant n'avoir jamais insulté un policier en civil ou avoir menacé les forces de l'ordre, alors qu'une vidéo enregistrée le 31 octobre 2014 le montrait en train de s'en prendre à deux agents en civil, dont l'intimé B._, en leur disant : « Tu sais qu'il y a du monde derrière moi! » ou encore « Va te faire enculer! ». De plus, cette altercation avait aussi démontré que le recourant avait déjà rencontré le policier B._ avant l'audience de confrontation, contrairement à ce qu'il avait prétendu. Sur la base de ces éléments, la cour cantonale est arrivée à la conviction que les faits dénoncés par l'intimé B._ étaient avérés.
1.2.2. Le recourant reproche à la cour cantonale de ne s'être fondée sur aucune preuve matérielle ni aucun témoignage, de n'avoir pas examiné la crédibilité des déclarations de l'intimé B._, de s'être contentée de présenter du recourant un tableau aussi dépréciatif que discutable et d'avoir admis une hostilité de sa part envers les forces de l'ordre alors qu'elle n'est aucunement établie. Le recourant conteste que sa version puisse être écartée en raison de cette prétendue hostilité et d'une proximité, au demeurant contestée, avec les membres de F._. Dans une telle situation, la cour cantonale ne pouvait sans autre se fonder sur les déclarations de l'intimé B._, ce d'autant plus qu'au vu du nombre de personnes présentes à la manifestation, il devait être possible de trouver des témoins. Enfin, le recourant allègue qu'il aurait toujours été présent à la manifestation entre les policiers et les manifestants, ce qui exclurait qu'il ait pu insulter ou menacer qui que ce soit sans que cela ne se remarque sur les enregistrements vidéo de la police.
1.2.3. Le recourant voit de l'arbitraire dans le fait que la cour cantonale ne se serait fondée sur aucune preuve matérielle et sur aucun témoignage. Cet argument méconnaît clairement la possibilité qu'a une autorité de jugement de fonder sa conviction sur un ensemble d'éléments ou d'indices convergents.
En l'espèce, le recourant fonde essentiellement sa critique sur la manière dont la cour cantonale a apprécié la crédibilité de la version des faits donnée par les protagonistes. S'agissant de l'hostilité envers les forces de l'ordre, retenue par la cour cantonale et contestée par le recourant, il y a lieu de se référer aux déclarations que celui-ci a faites devant le procureur et au cours desquelles il a déclaré : « J'admets ne pas aimer les policiers. Il a pu m'arriver de les injurier, notamment en les traitant de porcs ». Même s'il conteste avoir injurié les policiers le 4 octobre 2014, le recourant montre une hostilité certaine contre les forces de l'ordre et cette hostilité ne remonte pas au 3 février 2015, date de la perquisition effectuée à son domicile, comme il le prétend.
C'est à tort que le recourant considère qu'il serait sans pertinence qu'il ait ou non connu l'intimé B._ avant le 4 octobre 2014. En effet, le recourant a faussement déclaré qu'il n'avait jamais vu celui-ci avant l'audience de confrontation. S'il est possible qu'il n'ait pas connu l'identité exacte de l'intimé, il est certain que le 31 octobre 2014, il s'en était également pris à lui en sa qualité de policier alors qu'il était en civil. Ceci est d'autant plus vrai que le recourant semble avoir une hostilité particulière envers la Brigade E._, dont il connaît certains membres. L'intimé B._ a pour sa part maintenu une version inchangée des faits, qui est corroborée par une vidéo du recourant sur laquelle on voit celui-ci et l'intimé proches l'un de l'autre, ce qui démontre, contrairement aux allégations du recourant, que celui-ci a quitté, au moins temporairement, sa place devant les membres de F._. Ces éléments, liés au fait que l'intimé B._ a immédiatement déclaré à sa hiérarchie avoir été forcé de quitter sa « planque » en raison des menaces proférées à son encontre, permettaient à la cour cantonale de tenir pour avérées les déclarations de l'intimé B._, sans commettre d'arbitraire.
1.3. Le recourant conteste également les faits qui se sont déroulés le 3 février 2015.
1.3.1. La cour cantonale a retenu que les déclarations de l'intimé A._ concernant les circonstances de l'arrestation du recourant étaient crédibles et convaincantes. Elle a fondé sa conviction sur le fait qu'elles concordaient avec le témoignage de l'agent G._ et le rapport d'arrestation établi par son collègue H._. De plus, la version des agents était corroborée par la nature des lésions constatées sur le recourant. La cour cantonale a admis que les agents avaient dû faire usage de la force à l'encontre du recourant en le saisissant par les bras et en le plaquant contre un mur présentant des aspérités, ce qui avait occasionné une légère dermabrasion au front. Ainsi, la cour cantonale a tenu pour établi que le recourant s'était adressé à l'intimé A._ en le traitant de « connard de flic », « d'enculé de service » et de « fils de pute ». De même, la cour cantonale a considéré comme établi que le recourant avait tenté de mordre au bras l'agent A._.
1.3.2. Le recourant conteste les déclarations des policiers H._, A._ et G._ dont la crédibilité serait entachée, le premier ayant été condamné pour avoir, dans l'exercice de ses fonctions, créé une fausse plainte pénale contre lui - l'affaire étant actuellement pendante devant la cour cantonale - et les deux autres ayant fait l'objet d'une plainte pénale pour faux dans les titres pour avoir attesté des faits inexacts propres à disculper H._ dans la procédure opposant celui-ci au recourant. De ce fait, même la concordance de leurs déclarations ne pourrait pas constituer une base suffisante pour retenir des faits à charge du recourant. De plus, celui-ci prétend que rien ne démontre que les policiers avaient été contraints d'avoir recours à la force lors de la perquisition du 3 février 2015.
1.3.3. Aux termes de l'<ref-law>, aucun fait nouveau ni aucune preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (al. 1).
Le recourant invoque l'existence d'une plainte pénale de sa part à l'encontre de l'intimé A._ et du policier G._. Il se trouve que la plainte en question est datée du 11 janvier 2018, soit d'une date postérieure au jugement attaqué et sur laquelle la cour cantonale n'a donc pas pu se prononcer. Il s'agit donc d'un fait nouveau irrecevable devant le Tribunal fédéral.
1.3.4. Dans la présente procédure, le policier G._ a été entendu comme témoin et a confirmé en tous points la version de l'intimé A._ et le rapport de H._. Les critiques du recourant à l'égard du témoin G._, qui ne portent au demeurant pas sur les faits de la présente procédure, ne donnent aucun élément permettant de déduire que ce serait de façon arbitraire que la cour cantonale a accordé une valeur probante à ce témoignage.
1.4. Au vu de ce qui précède, la cour cantonale pouvait, sans arbitraire et sans violer la présomption d'innocence, retenir à charge du recourant ses agissements des 4 octobre 2014 et 3 février 2015. Le grief doit donc être rejeté.
2.
Le recourant se prévaut d'une violation des art. 177 et 285 CP en faisant grief à la cour cantonale d'avoir constaté les faits de manière arbitraire. Il n'a toutefois pas obtenu gain de cause sur cette question.
Dans la mesure où il n'invoque aucun autre argument concernant une application erronée des art. 177 et 285 CP, le grief doit être rejeté.
3.
Le recourant invoque une violation de son droit d'être entendu. Il soutient que la cour cantonale n'a pas examiné les contradictions et les incohérences ressorties des déclarations des policiers H._, B._, A._ et G._, malgré que celles-ci avaient fait l'objet d'une argumentation détaillée dans son appel.
Le recourant doit motiver son recours en exposant succinctement en quoi la décision attaquée viole le droit (<ref-law>). Le renvoi à des écritures précédentes ne répond pas à ces exigences (<ref-ruling> consid. 2.8 p. 54). Lorsqu'il se prévaut d'une violation de ses droits fondamentaux, ce moyen doit être invoqué et motivé par le recourant (<ref-law>), c'est-à-dire expressément soulevé et exposé de manière claire et détaillée (<ref-ruling> consid. 2.4 p. 368).
En l'espèce, la motivation du recourant ne répond pas aux exigences fixées par la loi et la jurisprudence. Ce grief est irrecevable.
4.
Le recours doit donc être rejeté dans la mesure où il est recevable. Au vu de l'issue du recours, il n'y a pas matière à une indemnité pour tort moral en faveur du recourant.
L'assistance judiciaire demandée par le recourant doit lui être refusée, le recours étant dépourvu de chances de succès (<ref-law> a contrario). Il supportera les frais de justice dont la quotité tiendra compte de sa situation financière (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1200 fr., sont mis à la charge de X._.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale d'appel et de révision.
Lausanne, le 22 juin 2018
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Tinguely